package src.算法.选择排序;

public class ChooseSort {
    public static void sort(Comparable[] a){
        for (int i = 0; i <= a.length-2; i++) {
            int minIndex = i; // 预设最小值索引为i处
            for (int j = i+1; j < a.length; j++) { // 遍历所有值从最小值开始
                if(greater(a[minIndex],a[j])){ // 预设最小值大于遇到的最小的值则更新最小索引并继续遍历，直至遍历结束
                    minIndex = j; // 预设最小值索引与实际遇到的小值索引交换
                }
            }
            // 一次循环结束后则交换预设最小值和实际最小值，直至遍历结束
            exch(a,i,minIndex);
        }
    }
    // 比较前一个元素是否大于后一个元素
    private static boolean greater(Comparable a,Comparable b){
        int result = a.compareTo(b);
        return result>0;
    }
    // 数组元素i和j交换位置
    private static void exch(Comparable[] a,int i,int j){
        Comparable temp;
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}
